<?php

    require_once(dirname(__FILE__).'/../globals.inc');
    $mikron->Page->StartBody();
    require_once(dirname(__FILE__).'/menu.inc');

    global $mikron;

    if(isset($_GET['setup']))
    {
        $mikron->Site->Setup();
    }
    foreach($mikron->Site->Schemas() as $schema)
    {
       $mikron->Schema->Add($schema['file'], $schema['name']) ;
    }
?>

    <div style="padding-left: 1em; ">
        <table><tr>
        <td valign="top">
            <fieldset><legend>Переменные</legend>
                Корневая директория сайта: <a href="/mikron/admin/fs.php?viewdir=<?php echo $_SERVER['DOCUMENT_ROOT']; ?>"><?php echo $_SERVER['DOCUMENT_ROOT']; ?></a>
                <br />БД сайта: <?php echo constant('bdname'); ?>
                <br />Версия PHP: <a href="phpinfo.php"><?php echo phpversion(); ?></a>
                <br />Операционная система: <?php echo constant('PHP_OS'); ?>
            </fieldset>
            <fieldset><legend>Генератор .htpasswd</legend>
                <div style="padding: 0 0 .2em 0;">Введите на каждой строке пары<br />
                логин и пароль разделив их двоеточием:</div>
                <?php
                    $frm0 = new html_form('htpasswd_generator');
                        $value = "login:password\r\nguest:guest";
                        $values = Array();
                        if($frm0->pageindex == 2)
                        {
                            $value = $frm0->formdata['passwords'];
                            $strings = explode("\r\n", $value);
                            foreach($strings as $string)
                            {
                                $parts = explode(':', $string, 2);
                                if(count($parts) == 2)
                                {
                                    $login = trim($parts[0]);
                                    $password = trim($parts[1]);
                                    $values[] = $login.':'.crypt($password, substr($password, 0, 2));
                                }
                            }
                            $frm0->pageindex = 1;
                        }
                        $frm0->addTextBox(1, 'passwords', null, false, $value, false, 48, 4);
                        echo '<br />';
                        $frm0->addSubmit('genpwd', 'Сгенерировать');
                        if(count($values))
                        {
                            echo '<h2>Результат:</h2><div style="opacity: .55; background-color: #fff; color: #000; padding: .5em; ">', implode('<br />', $values), '</div>';
                        }
                    $frm0->end();
                ?>
            </fieldset>
            
        </td><td valign="top">
            <fieldset><legend>Файлы схем</legend>
            <code><?php
                $schemas_array = Array();
                foreach($mikron->Schema->Schemas() as $scheme)
                {
                    $vfile = $scheme->file();
                    $vname = $scheme->name();
                    if(is_null($vname))
                    {
                        $vname = basename($vfile);
                    }
                    $schemas_array[] = sprintf('<a title="%s" href="schema.php?editschemafile=%s">%s</a>', $vfile, $vfile, $vname);
                }
                echo implode('<br />', $schemas_array);
                ?></code>
            </fieldset>

        </td><td valign="top">
            <fieldset><legend>Текущий сайт</legend>
            <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
            <select name="changesite" onchange="form.submit();"><?php
                foreach($mikron->SiteManager->sites as $site)
                {
                    $name = $site->sitename();
                    if($name == constant('SITE_NAME'))
                    {
                        echo "<option selected value=\"$name\">$name</option>";
                    }
                    else
                    {
                        echo "<option value=\"$name\">$name</option>";
                    }
                }
            ?></select> <a href="/mikron/admin/system.php?setup">Обновить сайт</a>
            </form>
            <h2>Обновление видимых имен:</h2>
            <?php
                $f = new html_form('updatedisplaynames', 'post', $_SERVER['REQUEST_URI']);
                if($f->pageindex == 2)
                {
                    //$fh = fopen(dirname(__FILE__).'/update_ent_dispname.sql', 'w');
                    $entity_names = $mikron->EntityManager->Items();
                    $onlynulls = array_key_exists('onlynulls', $f->formdata);
                    $cr = null;
                    if($onlynulls)
                    {
                        $cr = new Criterion('mikron_displayname', null, CR_ISNULL);
                    }
                    $ents = 0;
                    $items_count = 0;
                    foreach($entity_names as $entname)
                    {
                        $items = $mikron->Queries->Query($entname, null, $cr);
                        if($items->count() > 0)
                        {
                            $displaynames = Array();
                            $display_ids = Array();
                            $ents++;
                            while($item = $items->fetch())
                            {
                                $dn = NULL;
                                $dn = quote_smart(trim($item->DisplayName()));
                                $entid = $item->id;
                                $displaynames[] = "WHEN `id` = $entid THEN $dn";
                                $display_ids[] = $entid;
                                $items_count++;
                                if(count($displaynames) >= 100)
                                {
                                    $dn2 = implode(' ', $displaynames);
                                    $sql = "UPDATE $entname SET `mikron_displayname` = CASE $dn2 END WHERE `id` in (".implode(',', $display_ids).")";
                                    $displaynames = Array();
                                    $display_ids = Array();
                                    //fwrite($fh, $sql."\r\n");
                                    mysql_query($sql);
                                }
                            }
                            if(count($displaynames) > 0)
                            {
                                $dn2 = implode(' ', $displaynames);
                                $sql = "UPDATE $entname SET `mikron_displayname` = CASE $dn2 END WHERE `id` in (".implode(',', $display_ids).")";
                                $displaynames = Array();
                                $display_ids = Array();
                                //fwrite($fh, $sql."\r\n");
                                mysql_query($sql);
                            }
                            unset($displaynames);
                        }
                        $items->free();
                    }
                    //fclose($fh);
                    echo sprintf('<p>Успешно обновлено %s видов сущностей, всего %s объектов.</p>', $ents, $items_count);
                    $f->pageindex = 1;
                }
                $f->addCheckbox(1, 'onlynulls', 'Только пустые', null, true);
                echo ' Только пустые<br />';
                $f->addSubmit('refershdisplaynames', 'Обновить видимые имена');
                $f->end();
            ?>
            </fieldset>
            <?php /*
            <fieldset><legend>Модули</legend>
                <a href="?update_super_modules">Обновить модули</a>
                <?php
                if(isset($_GET['update_super_modules']))
                {
                    try
                    {
                        $mikron->Modules->Refresh($mikron);
                        ?><div class="okmessage">Модули успешно обновлены.</div><?php
                    }
                    catch(Exception $ex)
                    {
                        CriticalError($ex->getMessage(), $ex, true);
                    }
                }
                ?>
            </fieldset>
            */ ?>
        </td></tr>
        </table>

    </div>


    <div style="padding-left: 1em; ">

</div>
<!-- embed name="radio" src="http://www.station20.ru/widget.swf" width="420" height="190" bgcolor="#ffffff" --></embed>
<?php $mikron->Page->EndBody(); ?>